#include<stdio.h>
#include<unistd.h>
#include<string.h>
 
int main ()
{
      printf("Hello, It is printf\n");
      printf("Hello, It is printf\n");
      printf("Hello, It is printf\n");
      const char* buffer="Hello 这是系统调用write函数\n";
      write(1,buffer,strlen(buffer));
      ///////////向显示器打印和重定向到文件的顺序不同，原因是一个是行缓冲，一个是全缓冲//////////
      ///////////行缓冲时顺序打印，全缓冲时write系统调用直接写入，而printf需要满了再刷新出来//////
      

      ///////???
      fork();


      ///////////重定向到文件中看看，发现库函数打印了两次
      ///原因：fork()创建子进程时会把父进程缓冲区复制一份，若语言层缓冲区在fork前未刷新，则会打印两次
      return 0;

}


//int main ()
//{
//	printf("//////////对比系统调用和标准库函数在缓冲区上的差异(下面两个printf均写在write之前)///////////////\n");
//	printf("这是printf库函数，带换行符的\n");
//	printf("这是printf库函数，不带换行符");
//	
//	const char* buffer="Hello 这是系统调用write函数\n";
//	write(1,buffer,strlen(buffer));
//	///////////等两秒，语言级缓冲区在程序结束后才刷新，将第二次printf内容打印////////////
//	sleep(2);
//        return 0;
//}
